查看原文
其他

10分钟快速认识Pandas

尤而小屋 尤而小屋 2022-06-19

公众号:尤而小屋
作者:Peter
编辑:Peter

大家好,我是Peter~

本文通过介绍一个简单的案例来带领大家快速上手Pandas。

导入库

import pandas as pd  # 惯例方式
import numpy as np

import matplotlib.pyplot as plt
import seaborn as sns

读取本地csv文件

df = pd.read_csv("Titanic.csv")
df

数据大小

shape属性能够查看数据大小,返回的是一个元组:第一个元素值行记录数,第二个是字段个数

In [3]:

df.shape

Out[3]:

(891, 12)

查看头尾文件

  • head:默认是前5条
  • tail:默认是尾部5条

基本信息

In [6]:

df.dtypes

Out[6]:

PassengerId      int64
Survived         int64
Pclass           int64
Name            object
Sex             object
Age            float64
SibSp            int64
Parch            int64
Ticket          object
Fare           float64
Cabin           object
Embarked        object
dtype: object

In [7]:

df.index

Out[7]:

RangeIndex(start=0, stop=891, step=1)

In [8]:

df.columns

Out[8]:

Index(['PassengerId', 'Survived', 'Pclass', 'Name', 'Sex', 'Age', 'SibSp',
       'Parch', 'Ticket', 'Fare', 'Cabin', 'Embarked'],
      dtype='object')

选择数据

df.iloc[2:5,1:4]  # 切片选择
df.loc[2:5,"Pclass"]  # 切片 + 属性
df["Age"]  # 指定字段,单个字段得到Series数据
df[["Age","Pclass"]]  # 多个字段得到DataFrame
df.select_dtypes(include=["float","int"])  # 根据字段类型选择 
df[df.Age > 36].head(3)  # 根据关系选择
df[df["Name"].str.contains("Miss")]   # 根据文本关系选择
df[(df["Sex"] == "male") & (df["Parch"] == 0)]  # 多个筛选条件

排序

In [15]:

df.sort_values("Fare").head()  # 默认升序

Out[15]:

下面改成了降序的形式:

缺失值情况

In [17]:

df.isnull().sum()  # 删除前

Out[17]:

PassengerId      0
Survived         0
Pclass           0
Name             0
Sex              0
Age            177
SibSp            0
Parch            0
Ticket           0
Fare             0
Cabin          687
Embarked         2
dtype: int64

In [18]:

df.dropna(inplace=True)  # 删除缺失值

In [19]:

df.isnull().sum()  # 删除后

Out[19]:

PassengerId    0
Survived       0
Pclass         0
Name           0
Sex            0
Age            0
SibSp          0
Parch          0
Ticket         0
Fare           0
Cabin          0  # 没有缺失值
Embarked       0
dtype: int64

分组统计

In [20]:

df1 = df.groupby("Sex").agg({ "Name":"nunique", "Age":np.mean, "Fare":"sum"})
df1

转置功能

Pandas中有两种方式实现转置:

  • T
  • transpose

apply函数

In [22]:

df["Sex"].value_counts()

Out[22]:

male      95
female    88
Name: Sex, dtype: int64

In [23]:

# 将male变成0,female变成1

df["Sex"] = df["Sex"].apply(lambda x: 0 if x == "male" else 1)

In [24]:

df["Sex"].value_counts()

Out[24]:

0    95
1    88
Name: Sex, dtype: int64

可视化

In [25]:

plt.bar(df["Embarked"], df["Fare"])
plt.show()
sns.pairplot(df[["Sex","Age","Fare"]])
plt.show()

数据输出

df.to_csv("new_data.csv",index=False)  # 保存到csv文件
df.to_excel("new_data.xlsx",index=False)  # 保存到Excel文件
df.to_json("new_data.json",index=False)  #  保存成json文件


推荐阅读


快速认识Pandas的10大索引
kaggle实战:可视化深度探索苹果AppStores
酷炫!高级可视化神器Plotly_Express
数据分析师=7大主题,24份资料
Pandas筛选文本数据3部曲
kaggle实战:6大回归模型预测航班票价

尤而小屋,一个温馨的小屋。小屋主人,一手代码谋求生存,一手掌勺享受生活,欢迎你的光临

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存